package com.yufubao.service.service.applet.product;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yufubao.framework.result.PageUtils;
import com.yufubao.model.dto.applet.product.AttrDto;
import com.yufubao.model.pojo.applet.product.AttrEntity;
import com.yufubao.model.pojo.applet.product.ProductAttrValueEntity;
import com.yufubao.model.vo.applet.product.AttrRespVo;

import java.util.List;
import java.util.Map;

/**
 * 商品属性
 *
 * @author zhangzhan
 * @email 52194440@qq.com
 * @date 2024-08-28 23:00:26
 */
public interface AttrService extends IService<AttrEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * @description 新增属性时同时 添加属性和属性组中间表数据
     * @param attr 
     * @return void
     * @author zhangyiheng 
     * @date 2024/8/28 23:05
     */
    void saveDetailed(AttrDto attr);

    /**
     * @description 查询详细属性规格参数列表
     * @param params
     * @param catelogId
     * @param attrType
     * @return com.yufubao.common.result.PageUtils
     * @author zhangyiheng
     * @date 2024/8/29 13:39
     */
    PageUtils attrTypeList(Map<String, Object> params, Long catelogId, String attrType);

    /**
     * @description 根据属性id查询属性详情
     * @param attrId
     * @return com.yufubao.model.vo.cms.AttrRespVo
     * @author zhangyiheng
     * @date 2024/8/29 13:53
     */
    AttrRespVo getByIdCorrelationPath(Long attrId);

    /**
     * @description 修改或新增属性对应的属性分组关联关系
     * @param d
     * @return void
     * @author zhangyiheng
     * @date 2024/8/29 13:59
     */
    void updateOrSaveDetailed(AttrDto dto);

    /**
     * @description 修改回显spu属性信息
     * @param spuId
     * @return java.util.List<com.yufubao.model.pojo.cms.ProductAttrValueEntity>
     * @author zhangyiheng
     * @date 2024/8/30 10:51
     */
    List<ProductAttrValueEntity> baseListforspu(Long spuId);

    /**
     * @description 批量修改spu属性信息
     * @param spuId
     * @param productAttrValueEntities
     * @return void
     * @author zhangyiheng
     * @date 2024/8/30 10:54
     */
    void attrValueUpdate(Long spuId, List<ProductAttrValueEntity> productAttrValueEntities);
}

